<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>实验四-ES新特性</title>
</head>
<body>
    <script>
        console.log("189000526-谭静");
        //第一题
        // console.log("第一题：");
        // let a1, b1,c1 = [1,2,3, ];
        // console.log(a1,b1,c1);

        // let [a2,b2,c2] = [1,2,3, ];
        // console.log(a2,b2,c2);

        // let [a3,b3,c3] = [1, ,3, ];
        // console.log(a3,b3,c3);

        // let [a4,b4] = [1];
        // console.log(a4,b4);

        // let {y:a5,b5} = {x:1,y:2};
        // console.log(a5,b5);

        // let {a6,b6} = 123;
        // console.log(a6,b6);

        //第二题：运行下列代码，写出实验结果
        // console.log("第二题：");
        // let set = new Set();
        // set.add(1);
        // set.add(2);
        // set.add(3);
        // set.delete(2);//删除数字2

        // let i = set.values();
        // console.log(i.next());
        // console.log(i.next());
        // console.log(i.next());

        //第三题：运行代码，写出为什么最后一段代码没有输出任何结果的原因
        // console.log("第三题：");
        // let map = new Map();
        // map.set(1,"a");
        // map.set(2,"b");
        // map.set(3,"c");
        // map.set(4,"d");
        
        // for (let i = 1;i <= map.size;i ++){
        //     console.log(map.get(i));
        // }

        // map.forEach(function (value,key) {
        //     console.log(value);
        // });

        // for(let v of map.values()){
        //     console.log(v);
        // }

        // for(var prop in map){
        //     console.log(prop);
        // }//for in 遍历的是数组的下标，map是以键值对的方式存值的，没有所谓的下标

        //第四题：运行结果，简要阐述原因
        // console.log("第四题：");
        // let arr1 = [1,2,3];

        // let arr2 = arr1;
        // console.log(arr1 == arr2);//数组赋值

        // let arr3 = [...arr1];
        // console.log(arr1 == arr3);//扩展运算符是将一个数组转化为用逗号分隔的参数序列，所以arr1与arr3的类型已经不同了

        //第五题：用箭头函数改写，写出改后的代码
        // console.log("第五题：");
        // let arr4 = [1,2,3];
        // // arr4.forEach(function (v,k) {
        // //     console.log(v);
        // // })

        // arr4.forEach ( (v,k) => {
        //     console.log(v);
        // });

        //第六题：运行代码，写出这两句代码的作用
        // Array.of(1,2,3).filter(i => i >1).forEach(i => console.log(i));//过滤数组里面大于1的元素并输出该元素
        // let fib = n => n > 1 ? fib (n - 1) + fib(n - 2): n;
        // /*传入参数n，执行语句判断参数n是否大于1，是则返回fib (n - 1) + fib(n - 2)，否则返回n*/
        
    //     //第七题:用class和extends实现继承
        console.log("第七题：");
        class Animal {
            constructor(name) {
                this.name = name;
            }
            shout () {
                console.log(this.name + '狂叫');
            }
        }
        //子类新增属性成员 eat(), class定义的成员函数不须要用 this.,也不用 function
        class Dog extends Animal {
            constructor(name, age){//构造函数
                super(name); //super 指向原型对象
                this.age = age; //子类新增属性age
            }
            eat () {
                console.log(this.age + '岁的' + this.name + '在吃饭');
            }
        }
        var animal = new Animal('动物');
        animal.shout();
        var dog = new Dog('老汪汪', 31);
        dog.shout();
        dog.eat();    
    </script>
</body>
</html>